package com.cqupt.mapper;

import com.cqupt.pojo.Business;
import com.cqupt.pojo.Databases;
import org.apache.ibatis.annotations.Param;


import java.util.List;
import java.util.Map;

public interface BusinessMapper {
    // 获取所有的 业务，不包括包含的设备
    List<Map<String, Object>> getAllBusiness();

    // 通过业务的 id 获取属于此业务的设备
    List<Map<String, Object>> getBusinessInfoDeviceById(Map<String, Object> params);

    // 通过业务的 id 获取属于此业务的数据库
    List<Map<String, Object>> getBusinessInfoDatabaseById(Map<String, Object> params);

    // 获取所有的设备
    List<Map<String, Object>> getAllHosts();

    // 根据主机的id获取主机的名称
    List<String> getHostNameByIds(@Param("ids") List<Integer> ids);

    // 根据数据库的id获取数据库的名称
    List<String> getDatabaseNameByIds(@Param("ids") List<Integer> ids);

    // 获取所有的数据库
    List<Map<String, Object>> getAllDatabases();

    //获得全部主机（用于数据库管理查询）
    List<Map<String, Object>> getAllDatabasesReal(@Param(value = "start") int start, @Param(value = "end") int end);

    //获得全部主机数量
    List<Map<String, Object>> getAllDatabasesCounts();

    //添加数据库
    Integer addDatabases(Databases databases);

    //修改数据库
    Integer modifyDatabases(Databases databases);

    // 修改数据库状态
    Integer modifyDatabasesStatus(@Param(value = "databasesid") String databasesid, @Param(value = "databasesstatus") String databasesstatus);

    //删除数据库
    Integer delDatabases(@Param(value = "databasesid") String databasesid);

    //获得一个数据库信息、用于修改
    Map<String, Object> getADatabases(@Param(value = "databasesid") String databasesid);

    // 删除业务（通过id）
    Integer deleteBusinessById(Map<String, Object> params);

    // 根据业务id返回业务的name
    String getBusinessNameById(@Param(value = "business_id") Integer business_id);

    // 取消业务和主机间的关联
    Integer cancelBusinessAndHostRelation(Map<String, Object> params);

    // 取消业务和数据库的关联
    Integer cancelBusinessAndDatabasesRelation(Map<String, Object> params);

    // 添加业务 和数据库的关系
    Integer addBusiness(Business business);

    // 添加业务 和主机的关系
    Integer addBusinessAndHostRelation(@Param(value = "params") List<Map<String, Object>> params);

    // 添加业务 和数据库的关系
    Integer addBusinessAndDatabaseRelation(@Param(value = "params") List<Map<String, Object>> params);

    // 根据主机id获取业务
    List<Map<String, Object>> getBusinessByHostId(@Param(value = "hostId") String hostId);

    // 根据数据库id获取业务
    List<Map<String, Object>> getBusinessByDatabaseId(@Param(value = "databaseId") String databaseId);

    // 获得业务资源报表统计报表数据
    List<Map<String,Object>> getBusinessReport();

    // 获得业务下数据库信息
    List<Map<String,Object>> getDatabasesBussinessInfo(@Param(value = "business_fk")String business_fk);

    // 获得业务下主机信息
    List<Map<String,Object>> getHostsBussinessInfo(@Param(value = "business_fk")String business_fk);


    // 判断是否该主机下是否存在该数据库
    Map<String,Object> isExist(@Param(value = "databasesip")String databasesip,@Param(value = "databasestype")String databasestype);
}
